Software development is oftentimes performed by a group or team of developers. A subject software system is developed through design efforts, test efforts, implementation efforts and maintenance efforts. There may be different groups and different group members participating in each of these efforts. Various modeling and other development tools are used for increased communication and consistency during development of subject software systems. A software configuration management system is one such tool. Software configuration management systems allow teams of developers to work with artifacts of a subject software system.
A software configuration is a set of software artifact versions, where only one version of a given artifact is selected by a given software configuration. A software change-set identifies a logical change to a configuration, and consists of a set of one or more changes to one or more artifacts. That is, a change-set is a repository object that collects a related group of file, folder, and component modifications so that they can be applied to a flow target (workspace or stream) in a single operation. Change-sets are common practice in reversion control systems, such as Rational Team Concert™ that uses an optimistic locking model that does not require a check out operation before modification of files or folders. (Rational Team Concert is a trademark of International Business Machines, Corp. of Armonk, N.Y.) All files in a local workspace are normally writable. Typically, modified files remain private to a repository workspace until delivered. In the Concert Rational Team Concert™ source control example, changes are tracked in a local workspace and displayed in a pending changes view. Each modified component in a workspace can include an unresolved folder, an outgoing folder, or both. However, after making these changes, many developers are faced with the difficulty of understanding and subsequently minimizing the effect change-sets may have on other assets when working with multiple branches/streams. Some changes necessarily flow together, requiring developers to carefully examine and possibly manually apply changes across multiple streams, thus decreasing efficiency and accuracy during change-set delivery.